package com.google.code.sms.android.service;

import java.util.List;

import com.google.code.sms.android.audiofx.EqualizerController;
import com.google.code.sms.android.domain.MediaElement;
import com.google.code.sms.android.domain.PlayerState;
import com.google.code.sms.android.domain.RepeatMode;


/**
 * @author Sindre Mehus
 * @version $Id$
 */
public interface DownloadService {

    void download(List<MediaElement.Entry> songs, boolean save, boolean autoplay, boolean playNext);

    void shuffle();

    RepeatMode getRepeatMode();

    void setRepeatMode(RepeatMode repeatMode);

    boolean getKeepScreenOn();

    void setKeepScreenOn(boolean screenOn);

    void clear();

    void clearIncomplete();

    int size();

    void remove(DownloadFile downloadFile);

    List<DownloadFile> getDownloads();

    int getCurrentPlayingIndex();

    DownloadFile getCurrentPlaying();

    DownloadFile getCurrentDownloading();

    void play(int index);

    void seekTo(int position);

    void previous();

    void next();

    void pause();

    void start();

    void reset();

    PlayerState getPlayerState();

    int getPlayerPosition();

    int getPlayerDuration();

    void delete(List<MediaElement.Entry> songs);

    void pin(List<MediaElement.Entry> songs);

    void unpin(List<MediaElement.Entry> songs);

    DownloadFile forSong(MediaElement.Entry song);

    long getDownloadListUpdateRevision();

    void setSuggestedPlaylistName(String name);

    String getSuggestedPlaylistName();

    EqualizerController getEqualizerController();
}
